{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Drake Tutorials\n",
    "\n",
    "We have chosen to host all of our tutorials in Python/Jupyter notebooks, but the `pydrake` API is a thin wrapper over the C++ API. Most code can be ported very easily (in either direction).\n",
    "\n",
    "For an overview about the philosophy behind [Drake](https://drake.mit.edu), consider reading this [blog post](https://medium.com/toyotaresearch/drake-model-based-design-in-the-age-of-robotics-and-machine-learning-59938c985515).\n",
    "We have organized the tutorials around the three major components described in that post:\n",
    "\n",
    "### Running the tutorials\n",
    "\n",
    "To host the tutorials online, we use Deepnote. You can _view_ all of the tutorials online _without creating a Deepnote account_.\n",
    "\n",
    "If you would like to run a tutorial _interactively_ or to experiment with editing the code, click the 'Duplicate' button in the upper right while viewing. You'll be prompted to create an account using Google, GitHub, or SSO. The button will duplicate the entire suite of tutorials into your own personal Deepnote project.\n",
    " \n",
    "Alternatively, to run the tutorials locally, you can install pydrake; refer to [drake/tutorials/README.md](https://github.com/RobotLocomotion/drake/blob/master/tutorials/README.md) for details.\n",
    "\n",
    "## Multibody Dynamics\n",
    "\n",
    "- [Authoring a Multibody Simulation](./authoring_multibody_simulation.ipynb)\n",
    "- [Mathematical programming with MultibodyPlant](./mathematical_program_multibody_plant.ipynb)\n",
    "- [PyPlot Animation with MultibodyPlant](./pyplot_animation_multibody_plant.ipynb)\n",
    "- [Rendering MultibodyPlant](./rendering_multibody_plant.ipynb)\n",
    "- [Taking Derivatives of MultibodyPlant Computations w.r.t. Mass](./multibody_plant_autodiff_mass.ipynb)\n",
    "- [Hydroelastic Contact: Basics](./hydroelastic_contact_basics.ipynb)\n",
    "\n",
    "More multibody tutorials coming soon!\n",
    "\n",
    "## Mathematical Programming\n",
    "\n",
    "- [MathematicalProgram](./mathematical_program.ipynb)\n",
    "- [Setting solver parameters](./solver_parameters.ipynb)\n",
    "- [Updating costs and constraints](./updating_costs_and_constraints.ipynb) (e.g. for efficient solving of many similar programs)\n",
    "- [Debugging tips](./debug_mathematical_program.ipynb)\n",
    "- [Linear program](./linear_program.ipynb)\n",
    "- [Quadratic program](./quadratic_program.ipynb)\n",
    "- [Nonlinear program](./nonlinear_program.ipynb)\n",
    "- [Sum-of-squares optimization](./sum_of_squares_optimization.ipynb)\n",
    "- [Enabling licensed solvers on Deepnote](./licensed_solvers_deepnote.ipynb)\n",
    "\n",
    "## Dynamical Systems\n",
    "\n",
    "- [Modeling Dynamical Systems](./dynamical_systems.ipynb)\n",
    "- [Authoring Leaf Systems](./authoring_leaf_systems.ipynb)\n",
    "- [Working with Diagrams](./working_with_diagrams.ipynb)\n",
    "\n",
    "More systems tutorials coming soon!\n",
    "\n",
    "## Additional resources\n",
    "\n",
    "- [C++ API](https://drake.mit.edu/doxygen_cxx/index.html) documentation\n",
    "- [Python API](https://drake.mit.edu/pydrake/index.html) documentation\n",
    "- MIT [Robotic Manipulation](https://manipulation.mit.edu) course notes\n",
    "- MIT [Underactuated Robotics](https://underactuated.mit.edu) course notes\n",
    "- [Getting help](https://drake.mit.edu/getting_help.html)\n"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
